
BITS 16
;ORG 0x1200

; Habilitando A20 - 2

CALL deshabilitar_A20
CALL checkear_A20
CALL habilitar_A20
CALL checkear_A20

; Deshabilitamos las interrupciones - 3

CLI

; Cargamos GDTR - 4
; extern GDT_DESC en algun lado
LGDT[GDT_DESC]

; Seteamos bit PE en CR0 - 5

MOV EAX, CR0
OR EAX, 1
MOV CR0, EAX

; saltamos a modo protegido - 6

JMP 0x10:modoprotegido

; actualizamos registros DS, ES, GS, FS, SS. - 7
BITS 32
modoprotegido:
MOV AX, 0x18
MOV DS, AX
MOV ES, AX
MOV GS, AX
MOV FS, AX
MOV SS, AX

MOV AX, 0x20; seteamos el segmento de video (4to índice empezando por el 1)
MOV ES, AX

;Limplio la pantalla
xor esi,esi
mov ecx,(80*25)
mov ax,0
cicloLimpio:
	mov [es:esi],ax
	add esi,2
loop cicloLimpio

;Escribo la primer linea en la 3er fila
mov esi,(80*2*2);La posicion en la matriz pantalla es en bytes
mov ecx,80;Como escribo de a 2 bytes necesito 80 iteraciones para completar la linea
mov ax,0x7000;RGB todos en 1 para el fondo
cicloFila1:
	mov [es:esi],ax
	add esi,2
loop cicloFila1

;Escribo la 2da linea en la 24ra fila
mov esi,(80*2*23);La posicion en la matriz pantalla es en bytes
mov ecx,80;Como escribo de a 2 bytes necesito 80 iteraciones para completar la linea
mov ax,0x7000;RGB todos en 1 para el fondo
cicloFila2:
	mov [es:esi],ax
	add esi,2
loop cicloFila2


JMP $

%include "a20.asm"
extern GDT_DESC
